#ifndef __DATABASE_H__
#define __DATABASE_H__

#include <QSqlDatabase>
#include <QString>
#include <QList>
#include <QVector>

class User;
class Friend;

class Database : private QSqlDatabase {
public:
	Database(const QString& dbName);
	~Database();
	void createSchema();
	QList<Friend *> all();
	User* getUser(const QString& userName,const QString& userPassword);
	int getUserId(const QString& userName);
	bool setUser(const QString& userName,const QString& userPassword);
	QList<int> getFriends(const QString& userName);
	QList<int> getFriends(int id);
	QList<int> getInvitations(int id);
	bool inviteFriend(int id1, int id2);
	bool acceptInvitation(int id1,int id2);
	bool refuseInvitation(int id1,int id2);
	bool setFriend(const QString& userName1,const QString& username2);
	bool setFriend(int id1, int id2);
	bool deleteFriend(const QString& userName1,const QString& username2);
	bool setPassword(int id, const QString& oldPass,const QString& newPass);
private:
	bool deleteInvitation(int id1,int id2);
};

#endif //__DATABASE_H__

